package com.lovo.project.dao;

import com.lovo.project.model.PermissionDO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @title 角色权限持久接口
 * @author: chenqiang
 * @date: 2020/11/4 14:30
 */
public interface RolePermissionDAO {

    /**
     * 根据角色id查询其所有权限
     * 若list集合长度<=0,则抛出未找到角色权限异常
     * @param roleId  角色id
     * @return 权限集合
     */
    List<PermissionDO> findPermissionByRoleId(Integer roleId);

    /**
     * 根据用户id查询不属于他的所有权限
     * 若list集合长度<=0,则抛出未找到角色权限异常
     * @param  roleId  角色id
     * @return 权限集合
     */
    List<PermissionDO> findOtherPermissionByRoleId(Integer roleId);

    /**
     * 根据角色id和权限id删除权限
     * 如果影响行数个数小于list的长度，抛出删除角色权限异常
     * @param roleId 用户id
     * @return int 影响行数
     */
    int deletePermissionByRoleIdAndPermissionIdList(@Param("roleId")Integer roleId);

    /**
     * 根据角色id和权限id添加权限
     * 如果影响行数个数小于list的长度，抛出添加角色权限异常
     * @param roleId 用户id
     * @param permissionIdList 角色id集合
     * @return int 影响行数
     */
    int addPermissionByRoleIdAndPermissionIdList(@Param("roleId") Integer roleId,@Param("permissionIdList") List<String> permissionIdList);


}
